CSA JMCでAmazon Redshift環境に対してPythonプログラム実行を行う #データ統合基盤 #CSアナリティクス
当エントリは『クラスメソッド CSアナリティクス Advent Calendar 2020』23日目のエントリです。
- クラスメソッド CSアナリティクス Advent Calendar 2020 - Qiita
- クラスメソッド CSアナリティクス Advent Calendar 2020 | 特集カテゴリー | Developers.IO
- ビッグデータ分析支援のカスタマーストーリーアナリティクス|クラスメソッド|クラスメソッドのサービス
当エントリでは、クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト「CSA JMC(Job Management Console)」でプログラムを実行する際の手順について紹介します。
目次
CSAの構成要素(プログラム)機能実践
CSA JMCでは、「ジョブ」で実行出来る処理要素を、以下の「構成要素」に分類する形で作成・管理出来るようにする体制を取っています。Redshift連携に於いては以下のような定義となっています。
- 構成要素(データ連携):Amazon S3配下のデータをAmazon Redshift環境下に取り込む、所謂「COPYコマンド」で実行する内容を作成・管理・スケジュール連携するための要素
- 構成要素(SQL):Amazon Redshift環境下のデータに対してSQLを実行するための要素
- 構成要素(プログラム):任意のプログラムをジョブ実行の流れで実行するための要素(現状対応している言語はPythonのみ)
当エントリではこの中の「構成要素(プログラム)」について解説する形となります。
CSAの構成要素(プログラム)の規約など
当エントリでは、構成要素(プログラム)をDWH:Redshiftのサイト上で利用する際の条件・規約等について解説します。CSA JMCとして定めているものは以下の通りです。
- 利用可能なプログラム言語はPython3.7となります。
- Python3.7の基本機能の他、以下サードパーティーライブラリが利用可能です。
- boto3 (AWS SDK for Python)
- pandas (データ分析)
- psycopg2 (PostgreSQL系DBアクセス)
- requests (HTTP)
- jinja2 (テンプレートエンジン)
- scipy (科学技術計算)
- アップロードするプログラムについての「お作法」として、引数無しの「main」という名前の関数を必ず用意してください。CSAはmain関数を呼び出します。
def main(): print("hello csa!") if __name__ == '__main__': main()
プログラム実行に関する事前設定
上記利用可能なライブラリ以外をPythonプログラムで利用したい場合、対応するサイトの[サイト設定]→[プログラム実行設定]画面で必要なライブラリを指定しておくことで、以後利用可能となります。ライブラリの指定方法はpipのライブラリインストール方法に従ってください。
pyyaml pandas>1.0.0 requests<=2.0.0 psycopg2-binary==2.8.4
構成要素(プログラム)の登録
まずは上記規約を満たすPythonプログラムを作成、拡張子を*.pyとした上でファイルとして保存しておきます。CSA JMCでは、そのプログラムを認識させることでJMC上で利用出来るようになる流れとなっています。
CSA JMCのメニューより[構成要素]→[プログラム]を選択。
構成要素(プログラム)画面に遷移します。登録がない場合は以下のような状態となっています。前日投稿した『構成要素(SQL)』ではAmazon S3にアップロードしたものを認識させる方式を試していたので、こちらのエントリではCSA JMCの画面から登録する方式を試してみます。[フォルダを選択]を押下。
対象プログラムを含むフォルダを選択し、[アップロード]を押下。
確認ダイアログが表示されますので、[アップロード]を押下。
対象プログラムの一覧が、下記のようなイメージで表示されます。ここで不要なものがあればゴミ箱アイコンで除去の上、[アップロード]を押下。
ファイルがAmazon S3にアップロードされ、CSA JMCとしても対象プログラムを認識出来るようになりました。
ちなみにこの時点でAmazon S3の対象バケット・フォルダ配下には以下のような形でファイルがアップロードされています。(指定したフォルダの配下に子フォルダがあった場合はそのあたりも踏まえた上でアップロードされる形になります)
構成要素(プログラム)をジョブで実行
構成要素の準備は整いました。SQL同様、これらを元にジョブを作成します。ジョブ一覧にて[ジョブの追加]を選択し、
構成要素として上記で作成・登録したプログラムを指定、
以下のような形のジョブとして作成しました。
あとは通常ジョブとして実行する事で、処理に組み込んだPythonプログラムが順次稼働する流れとなります。
この様な形で、CSA JMCでは任意のPythonプログラムをジョブ処理の一環として実行する事が可能です。今回のエントリではごくごく簡単なサンプルプログラムの実行手順の紹介となりましたが、データ分析業務を遂行していく上で以下のようなケースも出てくることでしょう。Pythonプログラムを作成し、活用していくことでこのあたりは如何様にも実現可能な部分となるのではと思います。
- (CSA JMCで提供している)変数を使ったプログラムからの参照や処理の制御
- CSAプロダクトで対応していないデータソースに対してPythonプログラム経由でアクセスし、データファイルを作成
- SQLでは実現しきれないデータの制御・判断等をPythonプログラムで実現
- APIやCLIなどを使った各種サービス連携 などなど...
まとめ
という訳で、『クラスメソッド CSアナリティクス Advent Calendar 2020』23本目のエントリ、「CSA JMC(Job Management Console)」でプログラムを実行する際の手順に関する内容の紹介でした。
CSA Data Uploaderは1ヶ月間のトライアル利用が可能となっています。興味をお持ち頂いた方は是非無料版ダウンロードページからインストーラを入手頂き、お試し頂けますと幸いです。また、CSA JMCに関しても下記バナーから製品ページにアクセスする事が出来ます。是非御覧ください。
では、明日(24日目)のエントリもお楽しみに!